home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / language / xlisp_21.zoo / readme.1st < prev    next >
Text File  |  1990-02-28  |  7KB  |  199 lines

  1. This is a list of new features in XLISP version 2.0 as of 15Nov87:
  2.  
  3. Symbols have two value cells, one for normal values and one for
  4. function values.  SETQ sets the normal value, DEFUN sets the
  5. functional value.
  6.  
  7. The most important change from version 1.7 to 2.0 of XLISP is that
  8. it is now possible to save XLISP's workspace between sessions.  This
  9. feature isn't necessarily part of every implementation of XLISP 2.0
  10. since it is controlled by a compile-time conditional.  Check the file
  11. 'xlisp.h' to see if the symbol SAVERESTORE is defined for your machine
  12. before you try to use these functions.
  13.  
  14. The &key lambda list keyword is now supported as are initialization forms
  15. for &optional, &key and &aux parameters.  The supplied-p variables are
  16. also supported for &optional and &key parameters.
  17.  
  18. New functions and special forms:
  19.  
  20. (save filename)        ; *** NOT IN ALL 2.0 IMPLEMENTATIONS ***
  21. (restore filename)    ; *** NOT IN ALL 2.0 IMPLEMENTATIONS ***
  22. (subseq string start [end])
  23. (open name &key :direction)
  24. (vector [expr]...)
  25. (block name [expr]...)
  26. (return-from name [value])
  27. (tagbody [tag|expr]...)
  28. (psetq [sym value]...)
  29. (flet ([sym lambda-list [body]...]...) [expr]...)
  30. (labels ([sym lambda-list [body]...]...) [expr]...)
  31. (macrolet ([sym lambda-list [body]...]...) [expr]...)
  32. (unwind-protect expr [expr]...)
  33. (when test [expr]...)
  34. (unless test [expr]...)
  35. (loop [expr]...)
  36. (progv symbols values [expr]...)
  37. (pprint expr [stream])
  38. (string< str1 str2 &key :start1 :end1 :start2 :end2)
  39. (string= str1 str2 &key :start1 :end1 :start2 :end2)
  40. (string> str1 str2 &key :start1 :end1 :start2 :end2)
  41. (string<= str1 str2 &key :start1 :end1 :start2 :end2)
  42. (string/= str1 str2 &key :start1 :end1 :start2 :end2)
  43. (string>= str1 str2 &key :start1 :end1 :start2 :end2)
  44. (string-lessp str1 str2 &key :start1 :end1 :start2 :end2)
  45. (string-equal str1 str2 &key :start1 :end1 :start2 :end2)
  46. (string-greaterp str1 str2 &key :start1 :end1 :start2 :end2)
  47. (string-not-greaterp str1 str2 &key :start1 :end1 :start2 :end2)
  48. (string-not-equal str1 str2 &key :start1 :end1 :start2 :end2)
  49. (string-not-lessp str1 str2 &key :start1 :end1 :start2 :end2)
  50. (string-trim bag string)
  51. (string-left-trim bag string)
  52. (string-right-trim bag string)
  53. (string-upcase string &key :start :end)
  54. (string-downcase string &key :start :end)
  55. (nstring-upcase string &key :start :end)
  56. (nstring-downcase string &key :start :end)
  57. (symbol-function sym)
  58. (send obj msg [expr]...)
  59. (send-super msg [expr]...)
  60. (integerp expr)
  61. (floatp expr)
  62. (stringp expr)
  63. (arrayp expr)
  64. (streamp expr)
  65. (objectp expr)
  66. (fboundp expr)
  67. (characterp expr)
  68. (int-char expr)
  69. (char-int expr)
  70. (read-byte [stream])
  71. (write-byte expr [stream])
  72. (make-string-input-stream string [start [end]])
  73. (make-string-output-stream)
  74. (get-output-stream-string stream)
  75. (get-output-stream-list stream)
  76. (get-lambda-expression closure)
  77. (gcd expr1 expr2)
  78. (macroexpand form)
  79. (macroexpand-1 form)
  80.  
  81. There is now a real character data type.  All functions that are
  82. supposed to return characters (like READ-CHAR) now do.
  83.  
  84. The reader is now capable of handling both single and multiple escapes.
  85. This means that it is possible to read the symbol |aBc| and get a symbol
  86. with the print name "aBc".  The backslash can also be used as a single
  87. escape.  The same symbol could have been written \aB\c.
  88.  
  89. The read table now supports the character types :SESCAPE for single
  90. escape and :MESCAPE for multiple escapes.
  91.  
  92. The reader also supports the reader macros:
  93.  
  94.     #:symbol    an uninterned symbol
  95.     #| ... |#   a comment
  96.     #Onumber    an octal number
  97.     #Bnumber    a binary number
  98.  
  99. The following symbols preserve a history of values used by the
  100. read-eval-print loop:
  101.  
  102.     -        the current input expression
  103.     +        the last expression read
  104.     ++        the previous value of +
  105.     +++        the previous value of ++
  106.     *        the result of the last evaluation
  107.     **        the previous value of *
  108.     ***        the previous value of **
  109.  
  110. The global symbol *PRINT-CASE* was added to control the output case of
  111. symbols.  Its default value is :UPCASE which will cause symbols to
  112. be printed in uppercase.  You can change it to :DOWNCASE to get symbols
  113. to print in lowercase.
  114.  
  115. I have added the functions FIRST, SECOND, THIRD, FOURTH and REST as
  116. synonyms for CAR, CADR, CADDR, CADDDR and CDR.
  117.  
  118. Changed the default value of *print-case* to :upcase.
  119.  
  120. Added macros to init.lsp for:
  121.  
  122.     (defvar sym &optional val)
  123.     (defparameter sym val)
  124.     (defconstant sym val)
  125.  
  126. These symbols control the format in which numbers are printed.  They
  127. should be set to printf format strings.
  128.  
  129.     *integer-format*    (default is "%d" or "%ld")
  130.     *float-format*     (default is "%g")
  131.  
  132. (substr string start [length]) is replaced by:
  133.     (subseq string start [end])
  134.  
  135. (openi name) is replaced by: (open name :direction :input)
  136. (openo name) is replaced by: (open name :direction :output)
  137.  
  138. OPEN, LOAD, SAVE and RESTORE take strings or symbols as file names.
  139. If a symbol is given, the print name of the symbol is used as the base
  140. filename and the default extension (if any) is appended.
  141.  
  142. Renamed MEM to ROOM and TRANSCRIPT to DRIBBLE.
  143.  
  144. Added a trace facility.  The evaluator will now print trace
  145. information for function and macro calls.  The names of the
  146. functions and macros to trace should be in a list that is stored
  147. as the value of *TRACELIST*.
  148.  
  149. Added macro definitions for TRACE and UNTRACE to "init.lsp".
  150. Trace output goes to the stream that is the value of *TRACE-OUTPUT*.
  151.  
  152. Removed the hard wired prompting from READ.  There is no longer
  153. an unmatched left paren counter, but the debug level prompt remains.
  154.  
  155. The symbols *ERROR-OUTPUT* and *DEBUG-IO* have been added and
  156. are bound to streams that are used for error output and debug
  157. i/o respectively.
  158.  
  159. The symbol *GC-HOOK* has been added.  If it is bound to a function
  160. of two arguments, that function will be called after the garbage
  161. collector runs.  The two parameters are the total number of nodes
  162. and the number free after the garbage collection.
  163.  
  164. Added the function (COMMAND-POINT-SIZE <n>) to the Macintosh version
  165. to set the point size for the text in the command window.  The default
  166. point size is 9.
  167.  
  168. The SEND-SUPER function replaces the :SENDSUPER message to objects.
  169. All messages must be sent using either the SEND function or the
  170. SEND-SUPER function.  In other words, the syntax:
  171.  
  172.     (Class :new '(a b c))
  173.  
  174. must now be written as:
  175.  
  176.     (send Class :new '(a b c))
  177.  
  178. and
  179.  
  180.     (self :sendsuper :msg 1 2 3)
  181.  
  182. must now be written as:
  183.  
  184.     (send-super :msg 1 2 3)
  185.  
  186. This is because the CAR of a form is no longer evaluated.  To get the
  187. effect of having the function position evaluated, use the FUNCALL form.
  188.  
  189. The syntax of LOAD has changed from:
  190.  
  191.     (load name [verbose-flag [print-flag]])
  192.  
  193. to:
  194.  
  195.     (load name &key :verbose :print)
  196.  
  197.  
  198.  
  199.